﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using WAContratos.Bean;
using System.Collections;
using WebContratos.Bean;
using System.Collections.Generic;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace WAContratos.Manager
{
    public class ContratoManager
    {

        public ErroresBean guardarContratos(ContratoBean unContra, datosDerivacioBean udatosDeriva)
        {
            OracleConnection conn = Conexion.Cone;
            OracleCommand Comm = new OracleCommand();

            /*Byte dato = new Byte();
            Byte[] archivo = unContra.getArchivo();

            try
            {
                dato = archivo[0];
            }
            catch (Exception e1)
            {
                archivo = new Byte[1];
                archivo[0] = 0;
            }

            Byte[] archivoAnexo = unContra.getArchivoanexo();

            try
            {
                dato = archivoAnexo[0];
            }
            catch (Exception e1)
            {
                archivoAnexo = new Byte[1];
                archivoAnexo[0] = 0;
            }*/

            byte[] archivo = unContra.getArchivo();
            byte[] archivoAnexo = unContra.getArchivoanexo();
            
            //string fileName = this.txtCargaArchivos.FileName;


            conn.Open();

            OracleTransaction tx = default(OracleTransaction);
            tx = conn.BeginTransaction();

            OracleCommand cmd = new OracleCommand();
            cmd = conn.CreateCommand();

            cmd.Transaction = tx;

            cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
            cmd.Parameters.Add(new OracleParameter("tempblob", OracleDbType.Blob)).Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();


            
            OracleBlob tempLob = default(OracleBlob);
            tempLob = (OracleBlob)cmd.Parameters[0].Value;
            tempLob.BeginBatch(OracleOpenMode.ReadWrite);
            tempLob.Write(archivo, 0, archivo.Length);
            tempLob.EndWrite();

            OracleLob tempLob1 = default(OracleLob);
            tempLob1 = (OracleLob)cmd.Parameters[0].Value;
            tempLob1.BeginBatch(OracleLobOpenMode.ReadWrite);
            tempLob1.Write(udatosDeriva.Archivo, 0, udatosDeriva.Archivo.Length);
            tempLob1.EndBatch();


            cmd.Parameters.Clear();

            cmd.Connection = conn;
            cmd.CommandText = "PKG_CONTRATOS.PROC_INSERTACONTRATOS";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("p_txt_codigo_contrato", unContra.getCodigo_contrato());//         '    1
            cmd.Parameters.Add("p_txtContra", unContra.getContratista());//         '    2
            cmd.Parameters.Add("p_txtDescContra", unContra.getDesc_contratista());//         '    3
            cmd.Parameters.Add("p_txtRepresentanteContra", unContra.getRepre_contratista());//         '   4
            cmd.Parameters.Add("p_ContralstGerencia", unContra.getGerencia_solicitante());//         '   5
            cmd.Parameters.Add("p_txtFechaSuscripcion", unContra.getFecha_suscripcion());//         '    6
            cmd.Parameters.Add("p_txtPlazoContra", unContra.getPlazo());//         '    7
            cmd.Parameters.Add("p_lstFechaInicio", unContra.getEstado_inicio_fecha());//        8
            cmd.Parameters.Add("p_txtObjetoContrato", unContra.getObjeto_contrato());//         '  9
            cmd.Parameters.Add("p_lstAdministrador", unContra.getAdministrador());//         '    10
            cmd.Parameters.Add("lstDesAdministrador", unContra.getDesadministrador());//         '   11
            cmd.Parameters.Add("p_txtFiscalizador", unContra.getFiscalizador());//         '    12
            cmd.Parameters.Add("p_txtDesFiscalizador", unContra.getDesfiscalizador());//         '   13
            cmd.Parameters.Add("p_txtMontoContrato", unContra.getMonto_contrato());//         '   14
            cmd.Parameters.Add("p_txtFechaAnticipo", unContra.getFecha_anticipo());//         '   15
            cmd.Parameters.Add("p_txtPorcentajeAnti", unContra.getPorcentaje_anticipo());//         '   16
            cmd.Parameters.Add("p_LstestContrato", unContra.getEstado_contrato());//         '    17
            cmd.Parameters.Add("p_txtFechaCulminacion", unContra.getFecha_culminacion());//         '    18
            cmd.Parameters.Add(new OracleParameter("p_txtCargaArchivos", OracleDbType.Blob)).Value = tempLob;


            /*OracleParameter param = new OracleParameter(); 
            param.OracleDbType = OracleDbType.Blob;
            param.Size = archivo.Length;
            param.ParameterName = "p_txtCargaArchivos";  //19
            param.Value = archivo;
            Comm.Parameters.Add(param);*/
            
            /*OracleParameter param1 = new OracleParameter();
            param1.OracleDbType = OracleDbType.Blob;
            param1.Size = archivoAnexo.Length;
            param1.ParameterName = "p_txtCargaAnexo";  //20
            param1.Value = archivoAnexo;
            cmd.Parameters.Add(param1);
             */
            cmd.Parameters.Add(new OracleParameter("p_txtCargaAnexo", OracleDbType.Blob)).Value = tempLob1;

            cmd.Parameters.Add("p_txtObservacion", unContra.getObservacion());//         '   21
            cmd.Parameters.Add("p_nombrearchivo", unContra.getNombre_archivo());//         '    22
            cmd.Parameters.Add("p_nombrearchivoane", unContra.getNombre_archivo_ane());//         '   23
            cmd.Parameters.Add("p_departamento", unContra.getDepartamento());//         '   24
            cmd.Parameters.Add("p_usuario_ingreso", unContra.getUsuario_ingreso());//         '   25
            cmd.Parameters.Add("p_tipo_plazo", unContra.getTipo_plazo());//         '   26
            cmd.Parameters.Add("p_fecha_ini_otro", unContra.getFecha_ini_otro());//         '   27
            cmd.Parameters.Add("p_tipo_contrato", unContra.getTipo_contrato());//         '    28
            cmd.Parameters.Add("p_escontratista", unContra.getEsContratista());//         '    29
            cmd.Parameters.Add("p_FONDOS", unContra.getFondos());//         '    30
            cmd.Parameters.Add("p_clase", unContra.getClase());//         '    31
            cmd.Parameters.Add("p_presupuesto", unContra.getPresupuesto());//         '   32
            cmd.Parameters.Add("p_codigo_contrato", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    33

            cmd.Parameters.Add("p_usuario_continua", udatosDeriva.P_derivado_a);//         '    34
            cmd.Parameters.Add("p_id_flujo", unContra.Flujo);//         '   35            

            cmd.Parameters.Add("p_desContralstGerencia", unContra.getDesgerencia_solicitante());//         '   36

            cmd.Parameters.Add("p_accion", udatosDeriva.P_accion);//         '   37



            

            /*try
            {
                dato = udatosDeriva.Archivo[0];
            }
            catch (Exception e1)
            {
                udatosDeriva.Archivo = new Byte[1];
                udatosDeriva.Archivo[0] = 0;
            }*/

            cmd.Parameters.Add(new OracleParameter("p_doc_derivado", OracleDbType.Blob)).Value = tempLob1;
            
            /*param = new OracleParameter();
            param.OracleDbType = OracleDbType.Blob;
            param.Size = udatosDeriva.Archivo.Length;
            param.ParameterName = "p_doc_derivado";  //38
            param.Value = udatosDeriva.Archivo;
            Comm.Parameters.Add(param);*/

            //Comm.Parameters.Add("p_doc_derivado", udatosDeriva.Archivo);//         '   32            
            cmd.Parameters.Add("p_nombre_archivo_derivado", udatosDeriva.P_nombrearchivo);//         '   39




            cmd.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 1500).Direction = ParameterDirection.Output;//   40
            cmd.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 1500).Direction = ParameterDirection.Output;//    41
            cmd.Parameters.Add("p_msj_usua", OracleDbType.Varchar22, 1500).Direction = ParameterDirection.Output;//    41
            
           
            String pcod = "";
            String resultado = "";
            String p_msj_usua = "";
            ErroresBean uError = new ErroresBean();
           

           // conn.Open();

            try
            {
                cmd.ExecuteNonQuery();

                pcod = (String)cmd.Parameters["p_codigo_resultado"].Value;
                resultado = (String)cmd.Parameters["p_msj_error"].Value;
                p_msj_usua = (String)cmd.Parameters["p_msj_usua"].Value;


                uError.P_cod_error = pcod;
                uError.P_msg_error_aplica = p_msj_usua;
                uError.P_msg_error_tecni = resultado;

                tx.Commit();
                
                conn.Close();
                Comm.Dispose();

                GC.Collect();
            }
            catch (Exception myex)
            {
                uError.P_cod_error = "90";
                uError.P_msg_error_aplica = "Error al Insertar en la Base de Datos - ContratoManager";
                uError.P_msg_error_tecni = myex.Message.ToString();
            }
            


            return uError;

   }


        public String verificaUsuario(String p_idFlujo)
        {
            //
            OracleConnection conn = Conexion.Cone;
            OracleCommand Comm = new OracleCommand();


            Comm.Connection = conn;
            Comm.CommandText = "PKG_CONTRATOS.PROC_VERIFICAUSU";
            Comm.CommandType = CommandType.StoredProcedure;
            Comm.Parameters.Add("p_id_flujo", p_idFlujo);//  13
            Comm.Parameters.Add("p_canti", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    14
            

            String pcod = "";
          

            conn.Open();
            Comm.ExecuteNonQuery();

            pcod = (String)Comm.Parameters["p_canti"].Value;
        
            Comm.Dispose();
            conn.Close();

            GC.Collect();


            return pcod;

        }

        public ErroresBean guardarProceso(CodProcesosBean unProceso)
        {
            OracleConnection conn = Conexion.Cone;
            OracleCommand Comm = new OracleCommand();

            ErroresBean uError = new ErroresBean();

            Comm.Connection = conn;
            Comm.CommandText = "PKG_CONTRATOS.PROC_INSERTAPROCE";
            Comm.CommandType = CommandType.StoredProcedure;
            Comm.Parameters.Add("p_codigo_proceso", unProceso.P_codigo_proceso);//         '    1
            Comm.Parameters.Add("p_objeto_proceso", unProceso.P_objeto_proceso);//         '    2
            Comm.Parameters.Add("p_estado_proceso", unProceso.P_estado_proceso);//         '    3
            Comm.Parameters.Add("p_presupuesto", unProceso.P_presupuesto);//         '   4
            Comm.Parameters.Add("p_fecha_publi", unProceso.P_fecha_publicacion);//         '   5
            Comm.Parameters.Add("p_url", unProceso.P_url);//         '    6
            Comm.Parameters.Add("p_usuario", General.nvl(unProceso.P_usuario,"SISTEMAS"));//         '    7
            Comm.Parameters.Add("p_contratista", unProceso.P_contratista);//  8
            Comm.Parameters.Add("p_des_contra", unProceso.P_des_contratista);//  9
            Comm.Parameters.Add("p_repre_contra", unProceso.P_repre_contrat);//  10
            Comm.Parameters.Add("p_desc_repre", unProceso.P_desc_repre_contra);//  11
            Comm.Parameters.Add("p_gerencia_sol", unProceso.P_gerencia_solicita);//  12
            Comm.Parameters.Add("p_des_gerenci", unProceso.P_des_gerencia_soli);//  13
            Comm.Parameters.Add("p_certipresu", unProceso.P_certificaPre);//  13
            Comm.Parameters.Add("p_tipo_contrato", unProceso.P_tipo_contrato);//  13
            Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    14
            Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 1500).Direction = ParameterDirection.Output;//   15
            Comm.Parameters.Add("p_errorusu", OracleDbType.Varchar22, 1500).Direction = ParameterDirection.Output;//   15


            String pcod = "";
            String resultado = "";
            String p_mensaUsu = "";



            conn.Open();
            Comm.ExecuteNonQuery();

            pcod = (String)Comm.Parameters["p_cod"].Value;
            resultado = (String)Comm.Parameters["p_msg"].Value;
            p_mensaUsu = (String)Comm.Parameters["p_errorusu"].Value;

            uError.P_cod_error = pcod;
            uError.P_msg_error_aplica = p_mensaUsu;
            uError.P_msg_error_tecni = resultado;

            Comm.Dispose();
            conn.Close();

            GC.Collect();


            return uError;

        }

        public ArrayList getDetFlujoDervi(String codContrato)
        {

            OracleConnection con = Conexion.Cone;
            OracleCommand Comm = new OracleCommand();


            DetalleFlujoBean tBean;
            ArrayList vDetFlujos = new ArrayList();

            if (con == null)
            {
                vDetFlujos.Add("89");
                vDetFlujos.Add("Error Interno del Sistema");
                //System.out.println("Problemas al conectarse a la Base de Datos");
            }
            else
            {
                try
                {


                    Comm.Connection = con;
                    Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_DERIV";
                    Comm.CommandType = CommandType.StoredProcedure;
                    Comm.Parameters.Add("p_codContrato", codContrato);//         '    Varchar22,
                    Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
                    Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 3).Direction = ParameterDirection.Output;
                    Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 50).Direction = ParameterDirection.Output;


                    OracleDataReader oReader;
                    con.Open();
                    oReader = Comm.ExecuteReader();

                    vDetFlujos.Add("00");
                    vDetFlujos.Add("");

                    while (oReader.Read())
                    {
                        tBean = new DetalleFlujoBean();

                        tBean.Id_flujo = oReader.GetValue(0).ToString();
                        tBean.Codigo_proceso = oReader.GetValue(1).ToString();
                        tBean.Derivado_por = oReader.GetValue(2).ToString();
                        tBean.Derivado_a = oReader.GetValue(3).ToString();
                        tBean.Mensaje = oReader.GetValue(4).ToString();
                        tBean.Id_flujo_nuevo = oReader.GetValue(5).ToString();
                        vDetFlujos.Add(tBean);

                    }


                }
                catch (OracleException e)
                {
                    vDetFlujos.Add("89");
                    vDetFlujos.Add("Error Interno del Sistema");
                }
                finally
                {

                }
            }

            Comm.Dispose();
            con.Close();

            GC.Collect();
            return vDetFlujos;
        }

        public ArrayList getDetFlujoSin(String p_idflujo)
        {

            OracleConnection con = Conexion.Cone;
            OracleCommand Comm = new OracleCommand();


            DetaFlujoBean tBean;
            ArrayList vDetFlujos = new ArrayList();

            if (con == null)
            {
                vDetFlujos.Add("89");
                vDetFlujos.Add("Error Interno del Sistema");
                //System.out.println("Problemas al conectarse a la Base de Datos");
            }
            else
            {
                try
                {


                    Comm.Connection = con;
                    Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENEDETSINUSU";
                    Comm.CommandType = CommandType.StoredProcedure;
                    Comm.Parameters.Add("p_id_flujo", p_idflujo);//         '    Varchar22,
                    Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
                    Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 3).Direction = ParameterDirection.Output;
                    Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 50).Direction = ParameterDirection.Output;


                    OracleDataReader oReader;
                    con.Open();
                    oReader = Comm.ExecuteReader();

                    vDetFlujos.Add("00");
                    vDetFlujos.Add("");

                    while (oReader.Read())
                    {
                        tBean = new DetaFlujoBean();

                        tBean.P_iddetflujo = oReader.GetValue(0).ToString();
                        tBean.P_objetoactivo = oReader.GetValue(1).ToString();
                        tBean.P_descripcion = oReader.GetValue(2).ToString();
                        tBean.P_descrip = oReader.GetValue(3).ToString();
                        tBean.P_idflujo = oReader.GetValue(4).ToString();

                        vDetFlujos.Add(tBean);

                    }


                }
                catch (OracleException e)
                {
                    vDetFlujos.Add("89");
                    vDetFlujos.Add("Error Interno del Sistema");
                }
                finally
                {

                }
            }

            Comm.Dispose();
            con.Close();

            GC.Collect();
            return vDetFlujos;
        }

        public ArrayList getDetFlujo(String p_usuario,
                                     String p_idflujo)
        {

            OracleConnection con = Conexion.Cone;
            OracleCommand Comm = new OracleCommand();


            DetaFlujoBean tBean;
            ArrayList vDetFlujos = new ArrayList();

            if (con == null)
            {
                vDetFlujos.Add("89");
                vDetFlujos.Add("Error Interno del Sistema");
                //System.out.println("Problemas al conectarse a la Base de Datos");
            }
            else
            {
                try
                {


                    Comm.Connection = con;
                    Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_DET_FLUJO";
                    Comm.CommandType = CommandType.StoredProcedure;
                    Comm.Parameters.Add("p_idflujo", p_idflujo);//         '    Varchar22,
                    Comm.Parameters.Add("p_usuario", p_usuario);//         '    Varchar22,
                    Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
                    Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 3).Direction = ParameterDirection.Output;
                    Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 50).Direction = ParameterDirection.Output;


                    OracleDataReader oReader;
                    con.Open();
                    oReader = Comm.ExecuteReader();

                    vDetFlujos.Add("00");
                    vDetFlujos.Add("");

                    while (oReader.Read())
                    {
                        tBean = new DetaFlujoBean();

                        tBean.P_iddetflujo = oReader.GetValue(0).ToString();
                        tBean.P_objetoactivo = oReader.GetValue(1).ToString();
                        tBean.P_descripcion =oReader.GetValue(2).ToString();
                        tBean.P_descrip = oReader.GetValue(3).ToString();                        
                        tBean.P_idflujo =oReader.GetValue(4).ToString();

                        vDetFlujos.Add(tBean);

                    }


                }
                catch (OracleException e)
                {
                    vDetFlujos.Add("89");
                    vDetFlujos.Add("Error Interno del Sistema");
                }
                finally
                {

                }
            }

            Comm.Dispose();
            con.Close();

            GC.Collect();
            return vDetFlujos;
        }

        public ArrayList getContratosTodos(String codContrato,
                                    String fecha_inicio,
                                    String fecha_fin) 
       {

                                        OracleConnection con = Conexion.Cone;
                                        OracleCommand Comm = new OracleCommand();
                                        

                                        ContratoBean tBean;
                                        ArrayList vContratos = new ArrayList();

                                        if (con == null)
                                        {
                                            vContratos.Add("89");
                                            vContratos.Add("Error Interno del Sistema");
                                            //System.out.println("Problemas al conectarse a la Base de Datos");
                                        }
                                        else
                                        {
                                            try
                                            {
                                               
                                                
                                                Comm.Connection = con;
                                                Comm.CommandText = "PKG_CONTRATOS.proc_obtiene_contratos";
                                                Comm.CommandType = CommandType.StoredProcedure;
                                                Comm.Parameters.Add("p_codContrato", codContrato);//         '    Varchar22,
                                                Comm.Parameters.Add("p_fecha_inicio", fecha_inicio);//         '    Varchar22,
                                                Comm.Parameters.Add("p_fecha_fin", fecha_fin);//         '    Varchar22,
                                                Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
                                                Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 3).Direction = ParameterDirection.Output;
                                                Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 50).Direction = ParameterDirection.Output;


                                                OracleDataReader oReader;
                                                con.Open();
                                                oReader = Comm.ExecuteReader();

                                                

                                                while (oReader.Read())
                                                {
                                                    tBean = new ContratoBean();

                                                    tBean.setCodigo_contrato(oReader.GetValue(0).ToString());
                                                    tBean.setContratista(oReader.GetValue(1).ToString());
                                                    tBean.setDesc_contratista(oReader.GetValue(2).ToString());
                                                    tBean.setRepre_contratista(oReader.GetValue(3).ToString());

                                                    //tBean.setRepre_contratista(oReader.GetValue(4).ToString());                    

                                                    tBean.setGerencia_solicitante(oReader.GetValue(5).ToString());
                                                    tBean.setFecha_suscripcion(oReader.GetValue(6).ToString());
                                                    tBean.setPlazo(oReader.GetValue(7).ToString());
                                                    tBean.setEstado_inicio_fecha(oReader.GetValue(8).ToString());
                                                    tBean.setObjeto_contrato(oReader.GetValue(9).ToString());
                                                    tBean.setAdministrador(oReader.GetValue(10).ToString());
                                                    tBean.setFiscalizador(oReader.GetValue(11).ToString());
                                                    tBean.setMonto_contrato(oReader.GetValue(12).ToString());
                                                    tBean.setFecha_anticipo(oReader.GetValue(13).ToString());
                                                    tBean.setPorcentaje_anticipo(oReader.GetValue(14).ToString());
                                                    tBean.setFecha_culminacion(oReader.GetValue(15).ToString());
                                                    tBean.setObservacion(oReader.GetValue(16).ToString());
                                                    tBean.setNombre_archivo(oReader.GetValue(17).ToString());
                                                    tBean.setEstado_contrato(oReader.GetValue(18).ToString());
                                                    tBean.setDesgerencia_solicitante(oReader.GetValue(19).ToString());
                                                    tBean.setDesadministrador(oReader.GetValue(20).ToString());
                                                    tBean.setDesfiscalizador(oReader.GetValue(21).ToString());
                                                    tBean.setSecuencia(oReader.GetValue(22).ToString());
                                                    tBean.setDepartamento(oReader.GetValue(23).ToString());
                                                    tBean.setFecha_registro(oReader.GetValue(24).ToString());
                                                    tBean.setNombre_archivo_ane(oReader.GetValue(25).ToString());
                                                    tBean.setUsuario_ingreso(oReader.GetValue(26).ToString());

                                                    tBean.setTipo_contrato(oReader.GetValue(27).ToString());
                                                    tBean.setFondos(oReader.GetValue(28).ToString());
                                                    tBean.setClase(oReader.GetValue(29).ToString());
                                                    tBean.setTipo_plazo(oReader.GetValue(30).ToString());
                                                    tBean.setPresupuesto(oReader.GetValue(31).ToString());

                                                    tBean.setEsContratista(oReader.GetValue(32).ToString());

                                                    vContratos.Add(tBean);


                                                }


                                            }
                                            catch (OracleException e)
                                            {
                                                vContratos.Add("89");
                                                vContratos.Add("Error Interno del Sistema");
                                            }
                                            finally
                                            {
                                                vContratos.Add("00");
                                                vContratos.Add("");
                                            }
                                        }

                                        Comm.Dispose();
                                        con.Close();

                                        GC.Collect();
                                        return vContratos;
    }

     public ArrayList getContratosTodos(String codContrato) 
     {
        
        ArrayList vContratos = new ArrayList();

        OracleConnection con = Conexion.Cone;

        String codRes = "";
        String msjRes = "";

        ContratoBean tBean;
        OracleCommand Comm = new OracleCommand();

        if (con == null) {
            vContratos.Add("89");
            vContratos.Add("Error Interno del Sistema");
            //System.out.println("Problemas al conectarse a la Base de Datos");
        } else {
            try {

                
                Comm.Connection = con;
                Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_CONTRATO";
                Comm.CommandType = CommandType.StoredProcedure;
                Comm.Parameters.Add("p_codContrato", codContrato);//         '    Varchar22,
                Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
                Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 3).Direction = ParameterDirection.Output;
                Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 50).Direction = ParameterDirection.Output;


                OracleDataReader oReader;
                con.Open();
                oReader = Comm.ExecuteReader();


                vContratos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
                vContratos.Add((String)Comm.Parameters["p_msj_error"].Value);

                while (oReader.Read())
                {
                    tBean = new ContratoBean();

                    tBean.setCodigo_contrato(oReader.GetValue(0).ToString());
                    tBean.setContratista(oReader.GetValue(1).ToString());
                    tBean.setDesc_contratista(oReader.GetValue(2).ToString());
                    tBean.setRepre_contratista(oReader.GetValue(3).ToString());
                    
                    //tBean.setRepre_contratista(oReader.GetValue(4).ToString());                    
                   
                    tBean.setGerencia_solicitante(oReader.GetValue(5).ToString());
                    tBean.setFecha_suscripcion(oReader.GetValue(6).ToString());
                    tBean.setPlazo(oReader.GetValue(7).ToString());
                    tBean.setEstado_inicio_fecha(oReader.GetValue(8).ToString());
                    tBean.setObjeto_contrato(oReader.GetValue(9).ToString());
                    tBean.setAdministrador(oReader.GetValue(10).ToString());
                    tBean.setFiscalizador(oReader.GetValue(11).ToString());
                    tBean.setMonto_contrato(oReader.GetValue(12).ToString());
                    tBean.setFecha_anticipo(oReader.GetValue(13).ToString());
                    tBean.setPorcentaje_anticipo(oReader.GetValue(14).ToString());
                    tBean.setFecha_culminacion(oReader.GetValue(15).ToString());
                    tBean.setObservacion(oReader.GetValue(16).ToString());
                    tBean.setNombre_archivo(oReader.GetValue(17).ToString());
                    tBean.setEstado_contrato(oReader.GetValue(18).ToString());
                    tBean.setDesgerencia_solicitante(oReader.GetValue(19).ToString());
                    tBean.setDesadministrador(oReader.GetValue(20).ToString());
                    tBean.setDesfiscalizador(oReader.GetValue(21).ToString());
                    tBean.setSecuencia(oReader.GetValue(22).ToString());
                    tBean.setDepartamento(oReader.GetValue(23).ToString());
                    tBean.setFecha_registro(oReader.GetValue(24).ToString());
                    tBean.setNombre_archivo_ane(oReader.GetValue(25).ToString());
                    tBean.setUsuario_ingreso(oReader.GetValue(26).ToString());                    

                    tBean.setTipo_contrato(oReader.GetValue(27).ToString());
                    tBean.setFondos(oReader.GetValue(28).ToString());
                    tBean.setClase(oReader.GetValue(29).ToString());
                    tBean.setTipo_plazo(oReader.GetValue(30).ToString());
                    tBean.setPresupuesto(oReader.GetValue(31).ToString());

                    tBean.setEsContratista(oReader.GetValue(32).ToString());

                    tBean.UrlINCOP = oReader.GetValue(33).ToString();
                    vContratos.Add(tBean);


                }

                

            } catch (OracleException e) {
                vContratos.Add("89");
                vContratos.Add("Error Interno del Sistema");                
            } finally {
               
            }
        }

        Comm.Dispose();
        con.Close();
        GC.Collect();

        return vContratos;
    }


     public ArrayList getContratosCodPro(String codProceso)
     {

         ArrayList vContratos = new ArrayList();

         OracleConnection con = Conexion.Cone;

         String codRes = "";
         String msjRes = "";

         ContratoBean tBean;
         OracleCommand Comm = new OracleCommand();

         if (con == null)
         {
             vContratos.Add("89");
             vContratos.Add("Error Interno del Sistema");
             //System.out.println("Problemas al conectarse a la Base de Datos");
         }
         else
         {
             try
             {


                 Comm.Connection = con;
                 Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_CONTRATOPRO";
                 Comm.CommandType = CommandType.StoredProcedure;
                 Comm.Parameters.Add("p_cod", codProceso);//         '    Varchar22,
                 Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
                 Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 3).Direction = ParameterDirection.Output;
                 Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 50).Direction = ParameterDirection.Output;


                 OracleDataReader oReader;
                 con.Open();
                 oReader = Comm.ExecuteReader();

                 vContratos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
                 vContratos.Add((String)Comm.Parameters["p_msj_error"].Value);

                 while (oReader.Read())
                 {
                     tBean = new ContratoBean();

                     tBean.setCodigo_contrato(oReader.GetValue(0).ToString());
                     tBean.setContratista(oReader.GetValue(1).ToString());
                     tBean.setDesc_contratista(oReader.GetValue(2).ToString());
                     tBean.setRepre_contratista(oReader.GetValue(3).ToString());

                     //tBean.setRepre_contratista(oReader.GetValue(4).ToString());                    

                     tBean.setGerencia_solicitante(oReader.GetValue(5).ToString());
                     tBean.setFecha_suscripcion(oReader.GetValue(6).ToString());
                     tBean.setPlazo(oReader.GetValue(7).ToString());
                     tBean.setEstado_inicio_fecha(oReader.GetValue(8).ToString());
                     tBean.setObjeto_contrato(oReader.GetValue(9).ToString());
                     tBean.setAdministrador(oReader.GetValue(10).ToString());
                     tBean.setFiscalizador(oReader.GetValue(11).ToString());
                     tBean.setMonto_contrato(oReader.GetValue(12).ToString());
                     tBean.setFecha_anticipo(oReader.GetValue(13).ToString());
                     tBean.setPorcentaje_anticipo(oReader.GetValue(14).ToString());
                     tBean.setFecha_culminacion(oReader.GetValue(15).ToString());
                     tBean.setObservacion(oReader.GetValue(16).ToString());
                     tBean.setNombre_archivo(oReader.GetValue(17).ToString());
                     tBean.setEstado_contrato(oReader.GetValue(18).ToString());
                     tBean.setDesgerencia_solicitante(oReader.GetValue(19).ToString());
                     tBean.setDesadministrador(oReader.GetValue(20).ToString());
                     tBean.setDesfiscalizador(oReader.GetValue(21).ToString());
                     tBean.setSecuencia(oReader.GetValue(22).ToString());
                     tBean.setDepartamento(oReader.GetValue(23).ToString());
                     tBean.setFecha_registro(oReader.GetValue(24).ToString());
                     tBean.setNombre_archivo_ane(oReader.GetValue(25).ToString());
                     tBean.setUsuario_ingreso(oReader.GetValue(26).ToString());

                     tBean.setTipo_contrato(oReader.GetValue(27).ToString());
                     tBean.setFondos(oReader.GetValue(28).ToString());
                     tBean.setClase(oReader.GetValue(29).ToString());
                     tBean.setTipo_plazo(oReader.GetValue(30).ToString());
                     tBean.setPresupuesto(oReader.GetValue(31).ToString());

                     tBean.setEsContratista(oReader.GetValue(32).ToString());
                     tBean.UrlINCOP = oReader.GetValue(33).ToString();

                     vContratos.Add(tBean);


                 }


             }
             catch (OracleException e)
             {
                 vContratos.Add("89");
                 vContratos.Add("Error Interno del Sistema");
             }
             finally
             {

             }
         }

         Comm.Dispose();
         con.Close();
         GC.Collect();

         return vContratos;
     }


     public String ObtieneFechaCulminacion(int plazo,
                                           int tipoPlazo,
                                           String FechaIni)
     {

         OracleConnection conn = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();


            Comm.Connection = conn;
            Comm.CommandText = "PKG_CONTRATOS.proc_obtieneFechaCulmina";
            Comm.CommandType = CommandType.StoredProcedure;
            Comm.Parameters.Add("plazo", plazo);//         '    Varchar22,
            Comm.Parameters.Add("tipoPlazo", tipoPlazo);//         '    Varchar22,
            Comm.Parameters.Add("fechaIni", FechaIni);//         '    Varchar22,
            Comm.Parameters.Add("fechaCulmina", OracleDbType.Varchar22,25).Direction = ParameterDirection.Output;//    ' OUT   cur,
            Comm.Parameters.Add("pcod", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

            String fechaCulmina = "";
            String pcod = "";

            conn.Open();
            Comm.ExecuteNonQuery();

            pcod = (String)Comm.Parameters["pcod"].Value;

            if (pcod.Equals("99"))
                fechaCulmina = "";
            else
                fechaCulmina = (String)Comm.Parameters["fechaCulmina"].Value;

            Comm.Dispose();
            conn.Close();
            GC.Collect();   

            return fechaCulmina;
     }
     //actuFiscaliza

     public ErroresBean actuDeleTecnico(String p_codcontrato,
                                 String p_tipo_asigna,
                                 String p_observacion,
                                 String p_codusu,
                                 String p_asigna,
                                 EmailBean emails)
     {
         OracleConnection conn = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         EmailBean emailBean = new EmailBean();


         emailBean = emails;

         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENEEMAIL";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_usuar", p_codusu);//         '    Varchar22,
         Comm.Parameters.Add("p_email", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,



         conn.Open();
         Comm.ExecuteNonQuery();
         emailBean.P_emailpara = (String)Comm.Parameters["p_email"].Value;
         conn.Close();
         Comm.Parameters.Clear();

         conn.Open();

         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.proc_inserta_dele";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codcontrato", p_codcontrato);//         '    Varchar22,
         Comm.Parameters.Add("p_tipo_asigna", p_tipo_asigna);//         '    Varchar22,
         Comm.Parameters.Add("p_observacion", p_observacion);//         '    Varchar22,
         Comm.Parameters.Add("p_codusu", p_codusu);//         '    Varchar22,
         Comm.Parameters.Add("p_asigna", p_asigna);//         '    Varchar22,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 150).Direction = ParameterDirection.Output;//    ' OUT   cur,

         String pcod = "";
         String pmsg = "";
         String p_msgusu = "";

         Comm.ExecuteNonQuery();

         pcod = (String)Comm.Parameters["p_cod"].Value;
         pmsg = (String)Comm.Parameters["p_msg"].Value;

         if (pcod.Equals("00"))
         {
             EnviarEmail uMail = new EnviarEmail();
             uMail.envioEmailVariosArchivos(emailBean);
         }

         Comm.Dispose();
         conn.Close();

         GC.Collect();

         ErroresBean uErrorBean = new ErroresBean();

         uErrorBean.P_cod_error = pcod;
         uErrorBean.P_msg_error_aplica = p_msgusu;
         uErrorBean.P_msg_error_tecni = pmsg;

         return uErrorBean;
     }

     public ErroresBean actuFiscaliza(String p_codcontrato,
                                      String p_tipo_asigna,
                                      String p_observacion,
                                      String p_codusu,
                                      String p_asigna,
                                      EmailBean emails)
     {
         OracleConnection conn = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         EmailBean emailBean = new EmailBean();


         emailBean = emails;

         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENEEMAIL";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_usuar", p_codusu);//         '    Varchar22,
         Comm.Parameters.Add("p_email", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,



         conn.Open();
         Comm.ExecuteNonQuery();
         emailBean.P_emailpara = (String)Comm.Parameters["p_email"].Value;
         conn.Close();
         Comm.Parameters.Clear();

         conn.Open();

         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.proc_inserta_fisc";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codcontrato", p_codcontrato);//         '    Varchar22,
         Comm.Parameters.Add("p_tipo_asigna", p_tipo_asigna);//         '    Varchar22,
         Comm.Parameters.Add("p_observacion", p_observacion);//         '    Varchar22,
         Comm.Parameters.Add("p_codusu", p_codusu);//         '    Varchar22,
         Comm.Parameters.Add("p_asigna", p_asigna);//         '    Varchar22,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 150).Direction = ParameterDirection.Output;//    ' OUT   cur,

         String pcod = "";
         String pmsg = "";
         String p_msgusu = "";

         Comm.ExecuteNonQuery();

         pcod = (String)Comm.Parameters["p_cod"].Value;
         pmsg = (String)Comm.Parameters["p_msg"].Value;

         if (pcod.Equals("00"))
         {
             EnviarEmail uMail = new EnviarEmail();
             uMail.envioEmailVariosArchivos(emailBean);
         }

         Comm.Dispose();
         conn.Close();

         GC.Collect();

         ErroresBean uErrorBean = new ErroresBean();

         uErrorBean.P_cod_error = pcod;
         uErrorBean.P_msg_error_aplica = p_msgusu;
         uErrorBean.P_msg_error_tecni = pmsg;

         return uErrorBean;
     }


     public ErroresBean actuAdministrador(String p_codcontrato,
                                          String p_tipo_asigna,
                                          String p_observacion,
                                          String p_codusu,
                                          String p_asigna,
                                          EmailBean emails)
     {
         OracleConnection conn = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         EmailBean emailBean = new EmailBean();

        
             emailBean = emails;

             Comm.Connection = conn;
             Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENEEMAIL";
             Comm.CommandType = CommandType.StoredProcedure;
             Comm.Parameters.Add("p_usuar", p_codusu);//         '    Varchar22,
             Comm.Parameters.Add("p_email", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
             Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
             Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,



             conn.Open();
             Comm.ExecuteNonQuery();
             emailBean.P_emailpara = (String)Comm.Parameters["p_email"].Value;
             conn.Close();
             Comm.Parameters.Clear();

         conn.Open();
        
         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.proc_inserta_adm";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codcontrato", p_codcontrato);//         '    Varchar22,
         Comm.Parameters.Add("p_tipo_asigna", p_tipo_asigna);//         '    Varchar22,
         Comm.Parameters.Add("p_observacion", p_observacion);//         '    Varchar22,
         Comm.Parameters.Add("p_codusu", p_codusu);//         '    Varchar22,
         Comm.Parameters.Add("p_asigna", p_asigna);//         '    Varchar22,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 150).Direction = ParameterDirection.Output;//    ' OUT   cur,
         
         String pcod = "";
         String pmsg = "";
         String p_msgusu = "";

         Comm.ExecuteNonQuery();

         pcod = (String)Comm.Parameters["p_cod"].Value;
         pmsg = (String)Comm.Parameters["p_msg"].Value;

         if (pcod.Equals("00"))
         {
             EnviarEmail uMail = new EnviarEmail();
             uMail.envioEmailVariosArchivos(emailBean);
         }

         Comm.Dispose();
         conn.Close();

         GC.Collect();

         ErroresBean uErrorBean = new ErroresBean();

         uErrorBean.P_cod_error = pcod;
         uErrorBean.P_msg_error_aplica = p_msgusu;
         uErrorBean.P_msg_error_tecni = pmsg;

         return uErrorBean;
     }

     public UsuarioBean obtieneDatosUsu(String p_codUsuario)
     { 
         cls_datos unDatos = new cls_datos();         

         OracleConnection conn = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
        
         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.proc_obtiene_informacion";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codUsu", p_codUsuario);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,

         

         OracleDataReader oReader;
         conn.Open();
         oReader = Comm.ExecuteReader();

         
         String pcod = "";
         String pmsg = "";
         String p_msgusu = "";

         pcod = (String)Comm.Parameters["p_cod"].Value;
         pmsg = (String)Comm.Parameters["p_msg"].Value;
         p_msgusu = (String)Comm.Parameters["p_msg"].Value;

         UsuarioBean usuCon = new UsuarioBean();

         if (pcod.Equals("00"))
         {
             while (oReader.Read())
             {
                 usuCon.UserUsuario = oReader.GetValue(0).ToString();
                 usuCon.UserClave = oReader.GetValue(1).ToString();
                 usuCon.UserEmail = oReader.GetValue(2).ToString();
                 usuCon.UserLocalidad = oReader.GetValue(3).ToString();
                 usuCon.UserDepartamento = oReader.GetValue(4).ToString();
             }


         }

         conn.Close();

         Comm.Dispose();
         conn.Close();

         GC.Collect();

         return usuCon;

     }

     public ErroresBean actualizaContrato(ContratoBean uBean, datosDerivacioBean udatosDeriva, EmailBean emailBeans)
     {

         cls_datos unDatos = new cls_datos();         

         OracleConnection conn = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         EmailBean emailBean = new EmailBean();

        /* if (uBean.Flujo.Equals("2"))
         {
             

             emailBean = emailBeans;

             Comm.Connection = conn;
             Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENEEMAIL";
             Comm.CommandType = CommandType.StoredProcedure;
             Comm.Parameters.Add("p_usuar", uBean.getAdministrador());//         '    Varchar22,
             Comm.Parameters.Add("p_email", OracleDbType.Varchar2, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
             Comm.Parameters.Add("p_cod", OracleDbType.Varchar2, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,
             Comm.Parameters.Add("p_msg", OracleDbType.Varchar2, 100).Direction = ParameterDirection.Output;//    ' OUT   cur,

             

             conn.Open();
             Comm.ExecuteNonQuery();

             emailBean.P_emailpara = (String)Comm.Parameters["p_email"].Value;

             conn.Close();

             Comm.Parameters.Clear();

            

         }*/

         conn.Open();

         OracleTransaction tx = default(OracleTransaction);
         tx = conn.BeginTransaction();

         //OracleCommand cmd = new OracleCommand();
         Comm = conn.CreateCommand();

         Comm.Transaction = tx;

         Comm.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
         Comm.Parameters.Add(new OracleParameter("tempblob", OracleDbType.Blob)).Direction = ParameterDirection.Output;
         Comm.ExecuteNonQuery();



         OracleLob tempLob = default(OracleDbBlob);
         tempLob = (OracleLob)Comm.Parameters[0].Value;
         tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
         tempLob.Write(udatosDeriva.Archivo, 0, udatosDeriva.Archivo.Length);
         tempLob.EndBatch();

         Comm.Parameters.Clear();



         Comm.Connection = conn;
         Comm.CommandText = "PKG_CONTRATOS.ACTUACONTRATO";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_tipo_plazo", uBean.getTipo_plazo());//         '    Varchar22,
         Comm.Parameters.Add("p_estado_iniciofecha", uBean.getEstado_inicio_fecha());//         '    Varchar22,
         Comm.Parameters.Add("p_contratista", uBean.getContratista());//         '    Varchar22,
         Comm.Parameters.Add("p_descontratista", uBean.getDesc_contratista());//         '    Varchar22,
         Comm.Parameters.Add("p_reprecontratista", uBean.getRepre_contratista());//         '    Varchar22,
         Comm.Parameters.Add("p_gerenciasolici", uBean.getGerencia_solicitante());//         '    Varchar22,
         Comm.Parameters.Add("p_objetocontra", uBean.getObjeto_contrato());//         '    Varchar22,
         Comm.Parameters.Add("p_administa", uBean.getAdministrador());//         '    Varchar22,
         Comm.Parameters.Add("p_montocontrato", uBean.getMonto_contrato());//         '    Varchar22,
         Comm.Parameters.Add("p_fechaanticipo", uBean.getFecha_anticipo());//         '    Varchar22,
         Comm.Parameters.Add("p_desgerenciasolicit", uBean.getDesgerencia_solicitante());//         '    Varchar22,
         Comm.Parameters.Add("p_desadministra", uBean.getDesadministrador());//         '    Varchar22,
         Comm.Parameters.Add("p_fiscalizador", uBean.getFiscalizador());//         '    Varchar22,
         Comm.Parameters.Add("p_desfiscalizador", uBean.getDesfiscalizador());//         '    Varchar22,
         Comm.Parameters.Add("p_presupuesto", uBean.getPresupuesto());//         '    Varchar22,
         Comm.Parameters.Add("p_observacion", uBean.getObservacion());//         '    Varchar22,
         Comm.Parameters.Add("p_porcentajeanti", uBean.getPorcentaje_anticipo());//         '    Varchar22,
         Comm.Parameters.Add("p_plazo", uBean.getPlazo());//         '    Varchar22,
         Comm.Parameters.Add("p_usuarmodif", uBean.UsuarModif);//         '    Varchar22,
         Comm.Parameters.Add("p_usuaradmin", uBean.UsuarAdmin);//         '    Varchar22,
         Comm.Parameters.Add("p_codanterior", uBean.CodAnterior);//         '    Varchar22,
         Comm.Parameters.Add("p_idflujo", uBean.Flujo);//         '    Varchar22,
        
        
         Comm.Parameters.Add("p_idflujonuevo", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_estado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("P_usuarioconti", udatosDeriva.P_derivado_a);//         '    Varchar22,        


         Comm.Parameters.Add("p_accion", udatosDeriva.P_accion);//         '    Varchar22,        

        /* Byte dato = new Byte();
         try
         {
             dato = udatosDeriva.Archivo[0];
         }
         catch (Exception e1)
         {
             udatosDeriva.Archivo = new Byte[1];
             udatosDeriva.Archivo[0] = 0;
         }

         OracleParameter param = new OracleParameter();
         param.OracleDbType = OracleDbType.Blob;
         param.Size = udatosDeriva.Archivo.Length;
         param.ParameterName = "p_doc_derivado";  //38
         param.Value = udatosDeriva.Archivo;
         Comm.Parameters.Add(param);*/


         Comm.Parameters.Add(new OracleParameter("p_doc_derivado", OracleDbType.Blob)).Value = tempLob;


         Comm.Parameters.Add("p_nombre_archivo_derivado", udatosDeriva.P_nombrearchivo);//         '    Varchar22,        

        /*p_accion       in Varchar22,
        p_doc_derivado in blob,
        p_nombre_archivo_derivado in Varchar22,*/

         Comm.Parameters.Add("p_cod", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar22, 150).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msgusu", OracleDbType.Varchar22, 150).Direction = ParameterDirection.Output;//    ' OUT   cur,

         String pcod = "";
         String pmsg = "";
         String p_msgusu = "";
         
         Comm.ExecuteNonQuery();

         pcod = (String)Comm.Parameters["p_cod"].Value;
         pmsg = (String)Comm.Parameters["p_msg"].Value;
         p_msgusu = (String)Comm.Parameters["p_msgusu"].Value;

         uBean.FlujoNuevo = (String)Comm.Parameters["p_idflujonuevo"].Value;
         uBean.EstadoFlujo = (String)Comm.Parameters["p_estado"].Value;


       /*  if ((pcod.Equals("00"))&&(uBean.Flujo.Equals("2")))
         {
             EnviarEmail uMail = new EnviarEmail();
             uMail.envioEmail(emailBean);
         }*/

         Comm.Dispose();
         conn.Close();

         GC.Collect();

         ErroresBean uErrorBean = new ErroresBean();

         uErrorBean.P_cod_error = pcod;
         uErrorBean.P_msg_error_aplica = p_msgusu;
         uErrorBean.P_msg_error_tecni = pmsg;

         return uErrorBean;
     }

     public string obtieneDescrip(String cod,
                                  String nomCata)
     {
         OracleConnection unCon = new OracleConnection();
         unCon = Conexion.Cone;
         OracleCommand unComan = new OracleCommand();
         OracleDataReader uReader;
         String sql = "";
         unComan.Connection = unCon;
         string resulDescrip = "";

         sql = "select s.catalogo_descripcion from web_catalogo s where catalogo_nombre =  '" + nomCata + "' and catalogo_codigo = '" + cod + "'";

         unComan.CommandText = sql;

         unCon.Open();
         uReader = unComan.ExecuteReader();

         while (uReader.Read())
         {
             resulDescrip = uReader.GetValue(0).ToString();
         }

         unComan.Dispose();
         unCon.Close();
         GC.Collect();
         return resulDescrip;

     }

     public string obtieneAseguradora(String cod,
                                      String nomCata)
     {
         OracleConnection unCon = new OracleConnection();
         unCon = Conexion.Cone;
         OracleCommand unComan = new OracleCommand();
         OracleDataReader uReader;
         String sql = "";
         unComan.Connection = unCon;
         string resulDescrip = "";

         sql = "select compania, descripcion from seguros.seg_companias where compania = '" + cod + "'";

         unComan.CommandText = sql;

         unCon.Open();
         uReader = unComan.ExecuteReader();

         while (uReader.Read())
         {
             resulDescrip = uReader.GetValue(1).ToString();
         }

         unComan.Dispose();
         unCon.Close();
         GC.Collect();
         return resulDescrip;

     }

     public ArrayList ObtieneGantiaContra(String codContr,
                                        String codGaran)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vGarantia = new ArrayList();

         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_GARANT";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_codGarantia", codGaran);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vGarantia.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vGarantia.Add((String)Comm.Parameters["p_msj_error"].Value);
         GarantiaBean tBean;

     
         while (oReader.Read())
         {
             tBean = new GarantiaBean();
             tBean.CodigoContrato =oReader.GetValue(0).ToString();
             tBean.CodigoGarantia =oReader.GetValue(1).ToString();
             tBean.TipoGarantia =oReader.GetValue(2).ToString();
             tBean.Aseguradora =oReader.GetValue(3).ToString();
             tBean.FechaInicio =oReader.GetValue(4).ToString();
             tBean.Plazo =oReader.GetValue(5).ToString();
             tBean.FechaFin =oReader.GetValue(6).ToString();
             tBean.Monto =oReader.GetValue(7).ToString();
             tBean.Estado =oReader.GetValue(9).ToString();
             vGarantia.Add(tBean);
         }

         Comm.Dispose();
         con.Close();
         GC.Collect();

         return vGarantia;
     }



     public ArrayList ObtieneActaContra(String codContr,
                                        String codActa)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vActaEntr = new ArrayList();

         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_ACTA";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_codActa", codActa);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vActaEntr.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vActaEntr.Add((String)Comm.Parameters["p_msj_error"].Value);
         ActaEntrBean tBean;

         while (oReader.Read())
         {
             tBean = new ActaEntrBean();
             tBean.CodigoContrato = oReader.GetValue(0).ToString();
             tBean.CodigoActa = oReader.GetValue(1).ToString();
             tBean.FechaActa = oReader.GetValue(2).ToString();
             tBean.TipoActa = oReader.GetValue(3).ToString();
             tBean.Liquidacion = oReader.GetValue(4).ToString();
             tBean.Tecnico = oReader.GetValue(5).ToString();
             tBean.Observacion = oReader.GetValue(6).ToString();
             tBean.DesTecnico = oReader.GetValue(7).ToString();
             vActaEntr.Add(tBean);
         }

         Comm.Dispose();
         con.Close();
         GC.Collect();
         return vActaEntr;
     }

     public ArrayList ObtienePagoContra(String codContr,
                                    String codActa)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vPagos = new ArrayList();

         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_PAGOS";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_secAnti", codActa);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vPagos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vPagos.Add((String)Comm.Parameters["p_msj_error"].Value);
         PagosBean tBean;

         while (oReader.Read())
         {
             tBean = new PagosBean();
             tBean.CodigoContrato = oReader.GetValue(0).ToString();
             tBean.SecuenciaAnticipo = oReader.GetValue(1).ToString();
             tBean.FechaEntrega = oReader.GetValue(2).ToString();
             tBean.Porcentaje = oReader.GetValue(3).ToString();
             tBean.InformeAnticipo = oReader.GetValue(4).ToString();
             tBean.FormaPago = oReader.GetValue(5).ToString();
             tBean.PolizaAsociada = oReader.GetValue(6).ToString();
             vPagos.Add(tBean);
         }

         Comm.Dispose();
         con.Close();
         GC.Collect();

         return vPagos;
     }


     public ArrayList ObtieneAdendumContra(String codContr,
                                    String codActa)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vPagos = new ArrayList();

         
         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_ADENDUM";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_adendum", codActa);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vPagos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vPagos.Add((String)Comm.Parameters["p_msj_error"].Value);
         AdendumBean tBean;

         while (oReader.Read())
         {
             tBean = new AdendumBean();

             tBean.CodigoContrato = oReader.GetValue(0).ToString();
             tBean.CodigoAdendum = oReader.GetValue(1).ToString();
             tBean.ObjetoAdendum = oReader.GetValue(2).ToString();
             tBean.FechaSuscripcion = oReader.GetValue(3).ToString();
             tBean.InformeSolicitante = oReader.GetValue(4).ToString();
             tBean.InformeAprobante = oReader.GetValue(5).ToString();
             tBean.FechaExtension = oReader.GetValue(6).ToString();
             
             vPagos.Add(tBean);

         }
         Comm.Dispose();
         con.Close();
         GC.Collect();

         return vPagos;
     }

     public ArrayList ObtieneProrrogaContra(String codContr,
                                    String codActa)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vPagos = new ArrayList();


         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_PRORROGA";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_prorroga", codActa);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vPagos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vPagos.Add((String)Comm.Parameters["p_msj_error"].Value);
         ProrrogaBean tBean;

         while (oReader.Read())
         {
             tBean = new ProrrogaBean();

             tBean.CodigoContrato = oReader.GetValue(0).ToString();
             tBean.CodigoProrroga = oReader.GetValue(1).ToString();
             tBean.Descripcion = oReader.GetValue(2).ToString();
             tBean.FechaInicio = oReader.GetValue(3).ToString();
             tBean.FechaProrroga = oReader.GetValue(4).ToString();
             tBean.Informe = oReader.GetValue(5).ToString();

             vPagos.Add(tBean);

         }
         Comm.Dispose();
         con.Close();
         GC.Collect();

         return vPagos;
     }

     public ArrayList ObtieneAvancesContra(String codContr,
                                 String codActa)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vPagos = new ArrayList();


         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_AVANCES";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_avance", codActa);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefRefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar22, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vPagos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vPagos.Add((String)Comm.Parameters["p_msj_error"].Value);
         AvancesBean tBean;

         while (oReader.Read())
         {
             tBean = new AvancesBean();

             tBean.CodigoContrato = oReader.GetValue(0).ToString();
             tBean.SecuenciaAvance = oReader.GetValue(1).ToString();
             tBean.PorcentajeAvance = oReader.GetValue(2).ToString();
             tBean.PorcentajeTotal = oReader.GetValue(3).ToString();
             tBean.Observacion = oReader.GetValue(4).ToString();
             tBean.Fecha = oReader.GetValue(5).ToString();

             vPagos.Add(tBean);

         }
         Comm.Dispose();
         con.Close();
         GC.Collect();
         return vPagos;
     }

     public ArrayList ObtieneNovedadContra(String codContr,String codActa)
     {

         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList vPagos = new ArrayList();


         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.PROC_OBTIENE_NOVEDAD";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_codContrato", codContr);//         '    Varchar22,
         Comm.Parameters.Add("p_novedad", codActa);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msj_error", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

         vPagos.Add((String)Comm.Parameters["p_codigo_resultado"].Value);
         vPagos.Add((String)Comm.Parameters["p_msj_error"].Value);
         NovedadBean tBean;

         while (oReader.Read())
         {
             tBean = new NovedadBean();

             tBean.CodigoContrato = oReader.GetValue(0).ToString();
             tBean.SecuenciaNovedad = oReader.GetValue(1).ToString();
             tBean.Novedad = oReader.GetValue(2).ToString();
             tBean.FechaNovedad = oReader.GetValue(3).ToString();
             tBean.TipoNovedad = oReader.GetValue(4).ToString();
             
             vPagos.Add(tBean);

         }
         Comm.Dispose();
         con.Close();

         GC.Collect();
         return vPagos;
     }

     public string obtieneDescripcion(string abrevi)
     {
         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         string sql = "select descripcion from tra_departamentos where departamento = '"+abrevi+"'";
         string resulDescrip = "";
         OracleDataReader uReader;

         Comm.CommandText = sql;
         Comm.Connection = con;

         con.Open();
         uReader = Comm.ExecuteReader();

         while (uReader.Read())
         {
             resulDescrip = uReader.GetValue(0).ToString();
         }

         Comm.Dispose();
         con.Close();
         GC.Collect();

         return resulDescrip;

     }

     public UsuarioContraBean obtieneUsuario(String usr, String pwd)
     {
         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
       
         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.proc_obtiene_usuario";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_usuario", usr);//         '    Varchar22,
         Comm.Parameters.Add("p_contrase", pwd);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();

        
         UsuarioContraBean tBean = new UsuarioContraBean();

         while (oReader.Read())
         {
             tBean.ContrUser = oReader.GetValue(0).ToString();
             tBean.UserUsuario = oReader.GetValue(1).ToString();
             tBean.ClaveUsuario = oReader.GetValue(2).ToString();
             tBean.IdRolesUsuario = oReader.GetValue(3).ToString();
             tBean.Estado = oReader.GetValue(4).ToString();

         }
         Comm.Dispose();
         con.Close();
         GC.Collect();

         return tBean;
     }

     public ArrayList obtieneRolesUsu(String roles)
     {
         OracleConnection con = Conexion.Cone;
         OracleCommand Comm = new OracleCommand();
         ArrayList datos = new ArrayList();

         Comm.Connection = con;
         Comm.CommandText = "PKG_CONTRATOS.proc_obtiene_roles";
         Comm.CommandType = CommandType.StoredProcedure;
         Comm.Parameters.Add("p_roles", roles);//         '    Varchar22,
         Comm.Parameters.Add("p_datos", OracleDbType.RefCursor, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_cod", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,
         Comm.Parameters.Add("p_msg", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;//    ' OUT   cur,

         OracleDataReader oReader;
         con.Open();
         oReader = Comm.ExecuteReader();


         RolesContraBean tBean = new RolesContraBean();

         while (oReader.Read())
         {
             tBean.IdRolesUsuario = Convert.ToInt32(oReader.GetValue(0));
             tBean.IdNivel = Convert.ToInt32(oReader.GetValue(1));
             tBean.IdOpcion = Convert.ToInt32(oReader.GetValue(2));
             datos.Add(tBean);

             tBean = new RolesContraBean();
         }
         Comm.Dispose();
         con.Close();
         GC.Collect();

         return datos;
     }


     public ErroresBean guardarGarantias(GarantiaBean unGaranti)
     {
         OracleConnection conn = Conexion.Cone;
         OracleCommand cmd = new OracleCommand();

         
         conn.Open();

         
        // cmd.Parameters.Clear();

         cmd.Connection = conn;
         cmd.CommandText = "PKG_CONTRATOS.PROC_GUARDA_GARANTIA_NU";
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.Add("p_codigo_contrato", unGaranti.CodigoContrato);//         '    1
         cmd.Parameters.Add("p_codigo_garantia", unGaranti.CodigoGarantia);//         '    2
         cmd.Parameters.Add("p_tipo_garantia", unGaranti.TipoGarantia);//         '    3
         cmd.Parameters.Add("p_aseguradora", unGaranti.Aseguradora);//         '   4
         cmd.Parameters.Add("p_fecha_inicio", unGaranti.FechaInicio);//         '   5
         cmd.Parameters.Add("p_plazo", unGaranti.Plazo);//         '    6
         cmd.Parameters.Add("p_fecha_fin", unGaranti.FechaFin);//         '    7
         cmd.Parameters.Add("p_monto", unGaranti.Monto);//        8
         cmd.Parameters.Add("p_estado", unGaranti.Estado);//         '  9
         cmd.Parameters.Add("p_descripcion", unGaranti.Descripcion);//         '    10
         cmd.Parameters.Add("p_nomarchivo", unGaranti.NomArchivo);//         '    10
         cmd.Parameters.Add("p_codigo_resultado", OracleDbType.Varchar2, 1500).Direction = ParameterDirection.Output;//   40
         cmd.Parameters.Add("p_msj_error", OracleDbType.Varchar2, 1500).Direction = ParameterDirection.Output;//    41
         cmd.Parameters.Add("p_msj_error_usu", OracleDbType.Varchar2, 1500).Direction = ParameterDirection.Output;//    41


         String pcod = "";
         String resultado = "";
         String p_msj_usua = "";
         ErroresBean uError = new ErroresBean();




         // conn.Open();

         try
         {
             cmd.ExecuteNonQuery();

             pcod = (String)cmd.Parameters["p_codigo_resultado"].Value;
             resultado = (String)cmd.Parameters["p_msj_error"].Value;
             p_msj_usua = (String)cmd.Parameters["p_msj_error_usu"].Value;


             uError.P_cod_error = pcod;
             uError.P_msg_error_aplica = p_msj_usua;
             uError.P_msg_error_tecni = resultado;

             //tx.Commit();

             conn.Close();
             cmd.Dispose();

             GC.Collect();
         }
         catch (Exception myex)
         {
             uError.P_cod_error = "90";
             uError.P_msg_error_aplica = "Error al Insertar en la Base de Datos - ContratoManager";
             uError.P_msg_error_tecni = myex.Message.ToString();
         }



         return uError;

     }
  }
}
